<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Upload applet documentation - FAQ</title>
<meta name="description" content="FAQ for upload applets" />
<meta name="keywords" content="upload,applet,faq,file,image,http,ssl,https,ssh,ftp,sftp,documentation,upload,secure,faq,resume,large upload,zip,compression,java,jre" />
<link href="styles/template.css" rel="stylesheet" type="text/css" />
<link href="styles/doc.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
#faq .sectionTitle a {
	color: #FFFFFF;
	text-decoration: none;
}
#faq .sectionTitle a:hover {
	color: #FFFFFF;
	text-decoration: underline;
}
#faq a {
	color: #000000;
	text-decoration: none;
}
#faq a:hover {
	color: #000000;
	text-decoration: underline;
}

#faq ul {
	font-size: 10px;
	padding: 0px;
	list-style:inside ;
	margin: 1px;
}
#faq tr td {
	vertical-align: top;
}
-->
</style>
</head>
<body>
<div id="containerDiv">
  <div id="topDiv">
  <div id="navDiv">
  <div id="tabsDiv"><ul>
  <li><a href="http://www.jfileupload.com/index.html" title="Home"><span>Home</span></a></li>
  <li><a href="http://www.jfileupload.com/products/index.html" title="Products"><span>Products</span></a></li>
  <li><a href="http://www.jfileupload.com/support/index.html" title="Support"><span>Support</span></a></li>
  <li><a href="http://www.jfileupload.com/purchase/index.html" title="Purchase"><span>Purchase</span></a></li>
  <li><a href="http://www.jfileupload.com/about/index.html" title="About"><span>About</span></a></li>
  </ul></div>
  <div id="searchDiv"></div>
  </div>
  </div>
  <div id="mainDiv">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="20%" valign="top"><div id="sidebar">
      <div id="sidebarSection">
        <ul>
          <li><img src="styles/bullet.gif" width="7" height="13" border="0" /><a href="software.html" title="Software"><span>Software</span></a></li>
          <li><img src="styles/bullet.gif" width="7" height="13" border="0" /><a href="installation.html" title="Installation"><span>Installation</span></a></li>
          <li><img src="styles/bullet.gif" width="7" height="13" border="0" /><a href="configuration_http.html" title="Parameters for HTTP"><span>HTTP Upload</span></a></li>
          <li><img src="styles/bullet.gif" width="7" height="13" border="0" /><a href="configuration_ftp.html" title="Parameters for FTP"><span>FTP Upload</span></a></li>
          <li><img src="styles/bullet.gif" width="7" height="13" border="0" /><a href="faq.html" title="FAQ"><span>FAQ</span></a></li>
          <li><img src="styles/bullet.gif" width="7" height="13" border="0" /><a href="tutorials.html" title="Tutorials"><span>Tutorials</span></a></li>
          <li><img src="styles/bullet.gif" width="7" height="13" border="0" /><a href="api.html" title="API &amp; Design"><span>API &amp; Design</span></a></li>
        </ul>
      </div>
      <div id="sidebarNav"><br/><br/><a href="index.html" title="Back">&lt;&lt; Back</a></div>
      </div>    </td>
    <td width="80%" valign="top"><table width="98%" border="0" cellspacing="1" cellpadding="0" align="center">
      <tr>
        <td valign="top"><p align="center" class="mainTitle"><b>- FAQ -</b><div id="faq">
            <table width="100%" border="0" cellspacing="2">
              <tr>
                <td width="50%" class="sectionTitle"><a href="#1">Basic setup (7)</a></td>
                <td width="50%" class="sectionTitle"><a href="#19">Internationalization (11)</a></td>
              </tr>
              <tr>
                <td width="50%" class="faq"><ul>
                  <li><a href="#1">What
                    do I need to run JFileUpload ?</a></li>
                  <li><a href="#2">How
                    to setup JFileUpload Applet ?</a></li>
                  <li><a href="#3">Why
                    all parameters must be setup twice ?</a></li>
                  <li><a href="#4">I
                    get &quot;Connection refused&quot; error message ?</a></li>
                  <li><a href="#5">I
                    get &quot;server error 404&quot; error message ?</a></li>
                  <li><a href="#6">Applet
                    fails to load, I get ClassFormatError: Incompatible
                    magic value ?</a></li>
                  <li><a href="#10">How
                    to re-create folders structure on server-side when
                    uploading a folder with multiples files and subfolders
                    ..</a>.</li>
                </ul></td>
                <td width="50%"><ul>
                  <li><a href="#19">How
                    to modify JFileUpload resources (messages, menu,
                    errors ...) ?</a></li>
                  <li><a href="#20">How
                    display file browser window on &quot;File&quot; item
                    instead of &quot;Select file(s)&quot; ?</a></li>
                  <li><a href="#21">How
                    to remove the top menu bar and add a &quot;Select
                    file(s)&quot; button ?</a></li>
                  <li><a href="#23">How
                    to add a background image to the upload info/drag&amp;drop
                    panel ?</a></li>
                  <li><a href="#27">Applet
                    is not loading (grey box) when hosted under IIS ,
                    what should I do ?</a></li>
                  <li><a href="#28">I
                    get &quot;Can't find bundle for base name i18n&quot;
                    error, what should I do ...</a></li>
                </ul></td>
              </tr>
              <tr>
                <td width="50%" class="sectionTitle"><a href="#7">HTTP upload related (2)</a></td>
                <td width="50%" class="sectionTitle"><a href="#11">FTP upload related (3)</a></td>
              </tr>
              <tr>
                <td width="50%"><ul>
                  <li><a href="#7">Why
                    do I need a server-side script too ?</a></li>
                  <li><a href="#8">For
                    HTTP, can I use PHP, ASP, ColdFusion or PERL as server-side
                    script ?</a></li>
                  <li><a href="#9">Why
                    do you recommend JSPUpload as server-side script
                    ...</a></li>
                </ul></td>
                <td width="50%"><ul>
                  <li><a href="#11">How
                    to select an initial directory on FTP server before
                    uploading files through FTP ?</a></li>
                  <li><a href="#12">How
                    to create an initial directory on FTP server before
                    uploading files ...</a></li>
                </ul></td>
              </tr>
              <tr>
                <td width="50%" class="sectionTitle"><a href="#29">User's session (3)</a></td>
                <td width="50%" class="sectionTitle"><a href="#32">Security (10)</a></td>
              </tr>
              <tr>
                <td width="50%"><ul>
                  <li><a href="#29">How
                    to pass a cookie from JFileUpload to server-side
                    ?</a></li>
                  <li><a href="#30">How
                    to maintain user's HTTP session with server-side ?</a></li>
                  <li><a href="#31">How
                    to pass custom error from upload script to JFileUpload
                    front-end ...</a></li>
                </ul></td>
                <td width="50%"><ul>
                  <li><a href="#32">Does
                    JFileUpload support HTTPS ?</a></li>
                  <li><a href="#33">Does
                    JFileUpload support FTPS and SFTP?</a></li>
                  <li><a href="#36">How
                    to hide FTP username and password in HTML code ?</a></li>
                  <li><a href="#38">Is
                    it possible to pass FTP username/password through
                    JavaScript ...</a></li>
                  </ul></td>
              </tr>
              <tr>
                <td width="50%" class="sectionTitle"><a href="#42">Large upload and compression (2)</a></td>
                <td width="50%" class="sectionTitle"><a href="#44">Resume and overwrite features (4)</a></td>
              </tr>
              <tr>
                <td width="50%"><ul>
                  <li><a href="#42">Can
                    JFileUpload compress file automatically before upload
                    ?</a></li>
                  <li><a href="#43">How
                    to upload files &gt; 2GB through HTTP ...</a></li>
                </ul></td>
                <td width="50%"><ul>
                  <li><a href="#44">Resume doesn't work with my Microsoft FTP server ?</a></li>
                  <li><a href="#46">How
                    JFileUpload could rename duplicated files before
                    upload ...</a></li>
                  </ul>                  </td>
              </tr>
              <tr>
                <td width="50%" class="sectionTitle"><a href="#48">Others (13)</a></td>
                <td width="50%" class="sectionTitle"><a href="#13">After upload (6)</a></td>
              </tr>
              <tr>
                <td width="50%"><ul>
                  <li><a href="#57">I'm
                    lost, where are the samples for basic and advanced
                    usages ?</a></li>
                  <li><a href="#49">How
                    to pass extra parameters to JFileUpload from JavaScript
                    ?</a></li>
                  <li><a href="#54">Can
                    I scale images before upload ?</a></li>
                  <li><a href="#55">Can I queue files instead of uploading immediatly after selection ...</a></li>
                  </ul></td>
                <td width="50%"><ul>
                  <li><a href="#13">How
                    to redirect to an URL after upload completed ?</a></li>
                  <li><a href="#14">Is
                    it possible pass a HTTP POST request after upload
                    completed ?</a></li>
                  <li><a href="#16">Could
                    both &quot;post&quot; and &quot;forward&quot; parameters
                    work together ?</a></li>
                  <li><a href="#17">Can
                    I pass additional parameter to &quot;forward&quot;
                    parameter ...</a></li>
                  </ul></td>
              </tr>
            </table></div>
            <table width="100%" border="0" cellspacing="1" cellpadding="1">
              <tr>
                <td><div align="center"><hr size="2" noshade="noshade" />
                </div></td>
              </tr>
              <tr>
                <td ><table width="100%" border="0" cellspacing="1" cellpadding="1">
                  <tr>
                    <td class="sectionTitle">Basic setup</td>
                  </tr>
                </table></td>
              </tr>
              <tr>
                <td><ul>
                    <li><b><a name="1" id="1"></a></b><b>What
            do I need to run JFileUpload ?</b><b><br />
                                    </b>You need <a href="http://www.java.com" target="_blank">Java</a> (JRE 1.4 or higher) installed on client-side.</li>
                  <li><b><b><a name="2" id="2"></a></b>How
                    to setup JFileUpload Applet ?<br />
                      </b>JFileUpload applet includes two sample files: One for <a href="configuration_http.html">HTTP</a> upload (see applet_http.html and applet_http.js) and one for <a href="configuration_ftp.html">FTP</a> upload (see applet_ftp.html and applet_ftp.js). Edit and modify parameters
                    in the JavaScript file (the one ending by .js)  matching to your need.</li>
                  <li><b><b><a name="3" id="3"></a></b>Why
                    all parameters must be setup twice ?<br />
                      </b>You need to setup all parameters twice for cross-browser
                    support. For instance, for &quot;url&quot; parameter
                    you have to setup: <br />
                    ...<br />
                    url = &quot;http://yourserver.com/upload.jsp&quot;<br />
                    ...<br />
                    &lt;PARAM name=&quot;url&quot; value=&quot;http://yourserver.com/upload.jsp&quot;&gt;<br />
                    ... <br />
                    JFileUpload applet works under Internet Explorer, Safari, Firefox, Netscape, Opera and Google chrome. See <a href="software.html">software</a> section. <br />
                    <span class="italic">It is recommended to copy/paste existing parameter when you want to add a new one. It will  avoid typo mistake in the JavaScript.</span></li>
                  <li><b><b><a name="4" id="4"></a></b>I
                    get &quot;Connection refused&quot; error message ?<br />
                      </b>It means that &quot;url&quot; parameter of JFileUpload
                    is not setup. For HTTP upload, it must be the URL
                    of the server-side script that will handle the upload
                    (i.e. parse multipart request), for instance http://mycompany.com/upload.php.
                    This error could also mean that your FTP (or HTTP)
                    server is not up.</li>
                  <li><b><b><a name="5" id="5"></a></b>I
                    get &quot;server error 404&quot; error message ?<br />
                      </b>Same as question above. Your &quot;url&quot; parameter
                    is wrong.</li>
                  <li><b><b><a name="6" id="6"></a></b>Applet
                    fails to load, I get ClassFormatError: Incompatible
                    magic value ?<br />
                      </b>Double check that installed JAR files are not
                    corrupted. If you've transfered them on a web server
                    through FTP then make sure that transfer has been
                    done in BINARY mode.</li>
                  <li><b><b><a name="7" id="7"></a></b>Why
                    do I need a server-side script too ?<br />
                      </b>JFileUpload is just a client-side component
                    that could upload files or folders to a server. You
                    need a server-side script - for HTTP only - to store
                    uploaded files. For FTP, you just need a FTP server.</li>
                  <li><b><b><a name="8" id="8"></a></b>For
                    HTTP, can I use PHP, ASP, ColdFusion or PERL as server-side
                    script ?<br />
                      </b>Yes, JFileUpload uploads files through standard
                    HTTP multipart request. Your server-side script could
                    be written in PHP, JSP, ASP, ASP.NET, CGI/Perl, CGI/C++,
                    Ruby, ColdFusion ...</li>
                  <li><b><b><a name="9" id="9"></a></b>Why
                    do you recommend JSPUpload as server-side script
                    ?<br />
                      </b>We recommend <a href="http://www.jfileupload.com/products/tools/index.html" target="_blank">JSPUpload</a> with process.jsp script because it includes advanced
                    features (very large upload with low memory, folders
                    structure recomposition, resume and overwrite support, checksum
                    ...) you might have to develop in your own script.
                    However, JSPUpload needs Servlet/JSP support on server-side.
                    Notice that you will find others upload script samples
                    (such as PHP and ASP.NET) in <a href="http://www.jfileupload.com/products/tools/index.html" target="_blank">add-ons</a> section.</li>
                  <li><b><a name="10" id="10"></a></b><b>How
                    to re-create folders structure on server-side when
                    uploading a folder with multiples files and subfolders
                    ?</b><br />
                      First, you have to select the recursive depth through
                      &quot;folderdepth&quot; parameter of JFileUpload.
                      Second, you need to enable &quot;relativefilename&quot;
                      extra parameter on JFileUpload through paramX=relativefilename
                      and valueX=true (with X in [1-16]). For instance:<br />
                      &nbsp;&nbsp;&nbsp;folderdepth=&quot;5&quot;<br />
                      &nbsp;&nbsp;&nbsp;param1=&quot;relativefilename&quot;<br />
                      &nbsp;&nbsp;&nbsp;value1=&quot;true&quot;<br />
                      Finally - for HTTP only - you need a server-side script
                      that will handle &quot;relativefilename&quot; parameter
                      to create folders and subfolders before storing uploaded
          files. <br />
                                      <span class="sfntgray">(process.jsp server-side
                                      script included in JSPUpload provides this feature).</span>  </li>
                  </ul>
                  <table width="100%" border="0" cellspacing="1" cellpadding="1">
                                          <tr>
                                            <td class="sectionTitle">FTP related</td>
                                          </tr>
                      </table>
                  <ul>
                        <li><b><a name="11" id="11"></a></b><b>How
                          to select an initial directory on FTP server before
                          uploading files through FTP ?</b><br />
                          Use &quot;account&quot; extra parameter through paramX=account
                          and valueX=dirname (with X in [1-16]). For instance:<br />
                          &nbsp;&nbsp;&nbsp;param1=&quot;account&quot;<br />
                        &nbsp;&nbsp;&nbsp;value1=&quot;mydirectory/mysubdirectory&quot;</font></li>
                    <li><b><a name="12" id="12"></a>How
                      to create an initial directory on FTP server before
                      uploading files ?</b><br />
                      Set &quot;account&quot; parameter above and set &quot;accountcreation&quot;
                      extra parameter to &quot;true&quot;. For instance: <br />
                      &nbsp;&nbsp;&nbsp;param2=&quot;accountcreation&quot;<br />
                      &nbsp;&nbsp;&nbsp;value2=&quot;true&quot;</li>
                    <li><b><a name="61" id="61"></a>My FTP connection is not reliable and some upload fails, what can I do ?</b><br />
                      Enable &quot;retry&quot; parameter to ask JFileUpload to make several attempts - when current upload fails - before reporting and error. For instance, to enable three attempts: <br />
&nbsp;&nbsp;&nbsp;retry=&quot;3&quot;<br />
You can also setup &quot;retrydelay&quot; parameter to add a a few seconds delay between each attempts:<br />
&nbsp;&nbsp;&nbsp;retrydelay=&quot;5&quot;<br />
                    </li>
                  </ul>
                  <table width="100%" border="0" cellspacing="1" cellpadding="1">
                    <tr>
                      <td class="sectionTitle">After upload</td>
                    </tr>
                  </table>
                  <ul>
                        <li><b><a name="13" id="13"></a></b><b>How
                          to redirect to an URL after upload completed ?</b><br />
                          Use &quot;forward&quot; parameter such as forward=http://company.com/another.html <br />
                          If you need to redirect to a given frame of window
                          then use &quot;forwardtarget&quot;.<br />
                          If you need to append uploaded filenames to redirect
                        URL then set &quot;forwardparameters&quot; to true.</li>
                    <li><b><a name="14" id="14"></a>Is
                      it possible pass a HTTP POST request after upload
                      completed ?</b><br />
                      Yes, see &quot;post&quot; and &quot;postparameters&quot;.
                      It allows JFileUpload to send a HTTP POST request
                      with uploaded filenames (and path). It could be useful
                      if you need to send an email, store a status in database,
                      ... after upload. For instance, post=http://company.com/postscript.php</li>
                    <li><b><a name="15" id="15"></a>What
                      happen to the response of the HTTP POST ?</b><br />
                      Reponse of &quot;post&quot; url is discarded by JFileUpload.</li>
                    <li><b><a name="16" id="16"></a>Could
                      both &quot;post&quot; and &quot;forward&quot; parameters
                      work together ?<br />
                      </b>Yes, &quot;forward&quot; will be processed after
                      &quot;post&quot;. It means that HTTP POST request
                      will be sent prior to HTTP GET matching to URL redirection.
                      To be more precise :<br />
                      1 - JFileUpload: Send HTTP POST&nbsp; ----&gt;
                      Server : Process POST request.<br />
                      2 - JFileUpload: Discard response &nbsp;&lt;----
                      Server : Send response.<br />
                      3 - JFileUpload: Send HTTP GET &nbsp;&nbsp;&nbsp;----&gt;
                      Server : Process GET request.<br />
                      4 - Browser: Display HTML response&nbsp;&lt;----
                      Server : Send response.</li>
                    <li><b><a name="17" id="17"></a>Can
                      I pass additional parameter to &quot;forward&quot;
                      parameter ? </b><br />
                      Yes, try forward=&quot;http://company.com/another.html?custom=something&quot;</li>
                    <li><b><a name="18" id="18"></a>How
                      &quot;forwardparameters&quot; work if I upload many
                      files ? </b><br />
                      Depending on browser, URL size is limited (from 256
                      to 4000 characters) so the generated URL might be
                      too long (http://company.com/another.html?filename1=...) <br />
                      if you upload more than 100 files. The solution is
                      to use &quot;post&quot; and &quot;postparameters&quot;
                      to get all filenames (because there is no limitation
                      in POST size) and use &quot;forward&quot; parameter
                      only to redirect.</li>
                    </ul>
                  <table width="100%" border="0" cellspacing="1" cellpadding="1">
                    <tr>
                      <td class="sectionTitle">Internationalization</td>
                    </tr>
                  </table>
                  <ul>
                        <li><b><a name="19" id="19"></a></b><b>How
                          to modify JFileUpload resources (messages, menu,
                          errors ...) ?</b><br />
                          Most JFileUpload resources could be modified. A
                          resource could be an info message, an error message,
                          a menu item or a color. First, copy and modify <a href="tutorials/i18n.properties">i18n.properties</a> in the same directory as JFileUpload applet. Second,
                          setup &quot;resources&quot; parameter such as:<br />
                          &nbsp;&nbsp;&nbsp;&nbsp;resources = &quot;i18n&quot; <br />
                          Pay attention to setup it to i18n and <u>not</u> i18n.properties.
                          Finally, edit and modify i18n.properties as you need.
                          This file is an ASCII file and # means comment.<br />
                          If you need extra characters such as german (Ä, Ö,
                          ü, ...) or chinese, japanese, korean ... then convert
                          them into unicode format through JRE native2ascii
                        tool.</li>
                    <li><b><a name="19" id="19"></a>How
                      to internationalize JFileUpload resources (messages,
                      errors , ...) ?</b><br />
                      JFileUpload is ready for internationalization. First,
                      enable &quot;resources&quot; parameter as explained
                      above. i18n.properties will be the default resources
                      file. Second, if you want JFileUpload to support
                      multiple languages then add i18n_xy.properties translated
                      files (with xy the <a href="http://www.unicode.org/onlinedat/languages.html" target="_blank">ISO
                        639 language code</a> such as : en, es, de, zh ...).
                      For instance, to add german support :<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;1 - Copy i18n.properties into
                      i18n_de.properties.<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;2 - Translate all resources
                      in german in i18n_de.properties.<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;3 - Optionally, use JRE/bin/native2ascii.exe
                      tool to convert extra characters.<br />
                      JFileUpload will automatically load i18n_de.properties
                      if end-user settings are in german (and if localeresources parameter is setup to true). If not then it
                      will load i18n.properties.</font></li>
                    <li><b><a name="20" id="20"></a>How
                      display file browser window on &quot;File&quot; item
                      instead of &quot;Select file(s)&quot; ?</b><br />
                      Comment menu.file.open key in your custom i18n.properties
                      such as:<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;menu.file.open=Select file(s)<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;#menu.file.open=Select file(s) </li>
                    <li><b><a name="21" id="21"></a>How
                      to remove the top menu bar and add a &quot;Select
                      file(s)&quot; button ?</b><br />
                      To enable a &quot;Select file(s)&quot; button <a href="screenshots/screenshots.html" target="_blank"><img src="images/screenshot.jpg" alt="Screenshot 3" width="16" height="16" border="0" align="absmiddle" /></a> on the left of &quot;Cancel&quot; button, uncomment
                      progress.button.select key in your custom i18n.properties
                      such as:<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;#progress.button.select=Select
                      file(s)<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;progress.button.select=Select
                      file(s)<br />
                      Then to hide the menu bar, set &quot;hidebar&quot;
                      parameter to true: <br />
                      hidebar = &quot;true&quot;<br />
                      ...<br />
                      &lt;PARAM name=&quot;hidebar&quot; value=&quot;true&quot;&gt;</li>
                    <li><b><a name="22" id="22"></a>Can
                      JFileUpload display &quot;time elapsed&quot; when
                      uploading file ?</b><br />
                      Yes, enable both progress.info and progress.info.label
                      keys in i18n.properties. Time remaining and transfer speed is available too. It could also display an
                      overall progress bar <a href="screenshots/screenshots.html" target="_blank"><img src="images/screenshot.jpg" alt="Screenshot 3" width="16" height="16" border="0" align="absmiddle" /></a> (in addition to file upload progress bar).</li>
                    <li><b><a name="23" id="23"></a>How
                      to add a background image to the upload info/drag&amp;drop
                      panel ?</b><br />
                      Uncomment &quot;taskoutput.image.background&quot;
                      property in your i18n.properties and setup your image
                      filename <a href="screenshots/screenshots.html" target="_blank"><img src="images/screenshot.jpg" alt="Screenshot 2" width="16" height="16" border="0" align="absmiddle" /></a>.</li>
                    <li><b><a name="24" id="24"></a>Is
                      it possible to have an image previewer in file chooser
                      ?</b><br />
                      Yes, to enable this feature uncomment the following
                      keys in your i18n.properties:<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;filechooser.preview.image=enabled<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;filechooser.preview.image.title=Image
                      preview<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;filechooser.preview.image.enabled=Enabled</li>
                    <li><b><a name="25" id="25"></a>How
                      to modify JFileUpload fonts ?</b><br />
                      There are &quot;font.face&quot; and &quot;font.size&quot;
                      keys/values in i18n.properties. It allows to load
                      true type fonts and apply them over all JFileUpload
                      resources (label, button, menu ...). This feature
                      could be useful for accessibility.</li>
                    <li><b><a name="26" id="26"></a>How
                      to have a Microsoft Windows-like JFileUpload front-end
                      ?</b><br />
                      Enable lookandfeel=com.sun.java.swing.plaf.windows.WindowsLookAndFeel
                      key in i18n.properties <a href="screenshots/screenshots.html" target="_blank"><img src="images/screenshot.jpg" alt="Screenshot 2" width="16" height="16" border="0" align="absmiddle" /></a>.
                      You can also setup lookandfeel=auto to fit to the
                      underlying operating system look and feel.</li>
                    <li><strong><b><a name="27" id="27"></a></b>Applet
                      is not loading (grey box) when hosted under IIS ,
                      what should I do ?</strong><br />
                      Basically, IIS settings don't allow to serve files
                      with unknown extensions. IIS returns 404 error when
                      JFileUpload tries to load i18n.properties.
                      You have to update IIS settings to map &quot;.properties&quot;
                      to &quot;text/plain&quot; mime-type. See instructions
                      for IIS <a href="http://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/iis/maintain/featusability/mimeiis.mspx" target="_blank">4.x/5.x</a> or <a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/cd72c0dc-c5b8-42e4-96c2-b3c656f99ead.mspx" target="_blank">6.x</a>.</li>
                    <li><b><a name="28" id="28"></a></b><strong>I
                      get &quot;Can't find bundle for base name i18n&quot;
                      error, what should I do ?</strong><br />
                      See question above, even if you have a Unix/Linux
                      or MacOSX server. It will work when you could access
                      i18n.properties directly from your browser through
                      http://yourserver.com/something/i18n.properties.</li>
                    </ul>
                  <table width="100%" border="0" cellspacing="1" cellpadding="1">
                    <tr>
                      <td class="sectionTitle">User's session</td>
                    </tr>
                  </table>
                  <ul>
                        <li><b><a name="29" id="29"></a></b><b>How
                          to pass a cookie from JFileUpload to server-side
                          ?</b><br />
                          Use both
                          &quot;cookiename&quot; and &quot;cookievalue&quot;
                          extra parameters through paramX,valueX (with X in
                          [1-16]). For instance: <br />
                          &nbsp;&nbsp;&nbsp;&nbsp;param5=&quot;cookiename&quot;<br />
                          &nbsp;&nbsp;&nbsp; value5=&quot;mycookie&quot;<br />
                          &nbsp;&nbsp;&nbsp;&nbsp;param6=&quot;cookievalue&quot;<br />
                        &nbsp;&nbsp;&nbsp; value6=&quot;myvalue12345&quot;</li>
                    <li><b><a name="30" id="30"></a>How
                      to maintain user's HTTP session with server-side ?</b><br />
                      Most HTTP sessions are maintained through a cookie.
                      See question above to learn how to pass a cookie (for
                      JSP, cookiename should be JSESSIONID). You could also
                      pass session as URL rewriting, then modify &quot;url&quot;
                      parameter to pass it (for JSP url=...upload.jsp;jsessionid=xyz12345).
                      You could also use URL rewriting for &quot;forward&quot;
                      and &quot;post&quot; parameters.</li>
                    <li><b><a name="31" id="31"></a>How
                      to pass custom error from upload script to JFileUpload
                      front-end ?</b><br />
                      Enable &quot;errorheader&quot; extra parameter such
                      as:<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;param7=&quot;errorheader&quot;<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;value7=&quot;custommessage&quot;<br />
                      Then, pass &quot;custommessage&quot;=&quot;whatyouwanttobedisplayed&quot;
                      header in HTTP 405 response sent by your upload script.
                      JFileUpload will try to read the header to display
                      the error message in front-end.</li>
                    </ul>
                  <table width="100%" border="0" cellspacing="1" cellpadding="1">
                    <tr>
                      <td class="sectionTitle">Security</td>
                    </tr>
                  </table>
                  <ul>
                        <li><b><a name="32" id="32"></a></b><b>Does
                          JFileUpload support HTTPS ?</b><br />
                          Yes, it does. url parameter must start with &quot;https://...&quot;.
                          Just pay attention to have trusted X509 certificate
                        on JRE client.</li>
                    <li><b><a name="33" id="33"></a>Does
                      JFileUpload support FTPS and SFTP ?<br />
                      </b>Yes, it does. FTPS is supported natively. url parameter must start with &quot;ftps://...&quot;.
                      Just pay attention to have trusted X509 certificate
                      on JRE client. SFTP support requires <a href="../../sftp/index.html">SFTP</a> add-on, url parameter must start with &quot;sftp://...&quot;.</li>
                    <li><b><a name="34" id="34"></a>I
                      get &quot;No trusted certificate ...&quot; error with
                      HTTPS and FTPS ?</b><br />
                      It means that you're not using a trusted X509 certificate
                      for SSL. The signer of the certificate is not in the
                      JRE CA list (cacerts file) so you cannot open any
                      SSL connection with Java. You have 3 solutions:<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 - Deploy the certificate
                      in JRE of all JFileUpload users.<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Not
                      easy in production).<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 - Use WeakSSL plugin
                      in JFileUpload <a href="http://www.jfileupload.com/products/tools/index.html" target="_blank">add-ons</a> section.<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(It
                      allows to bypass trusted CA checking. Useful for testing
                      purpose).<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3 - Purchase a trusted
                      certificate for SSL from company such as VeriSign or Thawte.<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                      (Recommended in production).</li>
                    <li><b> </b><b><a name="35" id="35"></a></b><b>I get &quot;Access denied&quot; when  uploading with &quot;chunksize&quot; under Windows Vista ?</b><br />
                      Internet Explorer
                      7 under Windows Vista comes with new security features. A standard windows user account doesn't have permissions to write in some directories such as c:\, c:\Program Files ... &quot;chunksize&quot; parameter allows to split file in chunks before uploading. Basically, each chunks is written temporary on disk in the same folder as the selected file to upload. If you select file in a folder where you don't have write permissions then chunks cannot be created and you get &quot;Access denied&quot; errors. You will have the same problem with &quot;ziponfly&quot; parameter and plugins such as Scaling Filter. The solution is to setup JFileUpload to generate any temporary files under user's home tmp folder through: <br />
                      ...<br />
                      &lt;PARAM NAME=&quot;tmpfolder&quot; VALUE=&quot;javatmpdir&quot;&gt;<br />
                      ...<br />
                      Another solution, that applies to &quot;chunksize&quot; parameter only, is to setup JFileUpload to generate each chunks in memory through:<br />
                      ...<br />
                      &lt;PARAM NAME=&quot;chunkmode&quot; VALUE=&quot;onfly&quot;&gt;<br />
                      ...</li>
                    <li><b><a name="36" id="36"></a>How
                      to hide FTP username and password in HTML code ?</b><br />
                      JFileUpload supports base-64 encoded parameters.
                      Enclose value in [] to pass base-64 encoded string.
                      For instance to encode password parameter: <br />
                      &nbsp;&nbsp;&nbsp;&nbsp;param2=&quot;password&quot;<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;value2=&quot;qwerty1234&quot;<br />
                      then use any <a href="http://www.jfileupload.com/services/base64/base64.jsp" target="_blank">base-64
                        encoder/decoder</a> service to get :<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;param2=&quot;password&quot;<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;value2=&quot;[cXdlcnR5MTIzNA==]&quot;<br />
                      Note that base-64 encoding is not encryption. Since 2.3 encryption is available for username and password, we can encrypt your credentials upon request to our support team.</li>
                    <li><b><a name="37" id="37"></a>Is
                      it possible to NOT store url and username/password
                      in HTML ?</b><br />
                      Yes, if you don't want url and username/password parameters
                      in HTML, even base-64 encoded, then you could append
                      them in <a href="#i18n">i18n.properties</a> file such
                      as:<br />
                      &nbsp;url=ftp://yourftpserver.com<br />
                      &nbsp;username=yourftplogin<br />
                      &nbsp;password=yourftppassword</li>
                    <li><b><a name="38" id="38"></a>Is
                      it possible to pass FTP username/password through
                      JavaScript ?</b><br />
                      Yes, try the following in your JavaScript :<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;document.fileupload.setParameter(&quot;username&quot;,&quot;yourlogin&quot;)<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;document.fileupload.setParameter(&quot;password&quot;,&quot;yourpassword&quot;)<br />
                      See <a href="#48">others</a> section to learn
                      more about JavaScript API.</li>
                    <li><b><a name="39" id="39"></a>Could
                      JFileUpload work with a proxy ?</b><br />
                      Yes, JFileUpload will attempt to auto-detect HTTP
                      or SOCKS proxy. However, you could force proxy settings
                      if needed.</li>
                    <li><b><a name="40" id="40"></a>Does
                      JFileUpload support HTTP WWW-Authenticate ?</b><br />
                      Yes, JFileUpload supports basic WWW-Authenticate
                      through username and password parameters.</li>
                    <li><b><a name="41" id="41"></a></b><b>Does
                      JFileUpload support explicit SSL mode (AUTH TLS)
                      for FTPS ?</b><br />
                      Yes, default FTPS setup is AUTH TLS with protection
                      channel enabled (PROT P). JFileUpload also supports
                      AUTH SSL and SSL Connect (implicit mode). You could
                      switch between these modes through &quot;ftpsmode&quot;
                      parameter. You could disable protection channel through
                      &quot;ftpsprot&quot; parameter.</font><font face="Verdana, Arial, Helvetica, sans-serif" size="-1"><br />
                        </font></li>
                    </ul>
                  <table width="100%" border="0" cellspacing="1" cellpadding="1">
                    <tr>
                      <td class="sectionTitle">Large upload and compression</td>
                    </tr>
                  </table>
                  <ul>
                        <li><b><a name="42" id="42"></a></b><b>Can
                          JFileUpload compress file automatically before upload
                          ?</b><br />
                          Yes, JFileUpload could zip file before upload if
                          you enable &quot;ziponfly&quot; parameter. Here is
                          how JFileUpload works: <br />
                          &nbsp;&nbsp;&nbsp;&nbsp;1 - Create a temporary ZIP
                          file (such as originalfilename.zip).<br />
                          &nbsp;&nbsp;&nbsp;&nbsp;2 - Upload the compressed
                          file.<br />
                          &nbsp;&nbsp;&nbsp;&nbsp;3 - Delete the temporary ZIP
                          file.<br />
                          &nbsp;&nbsp;&nbsp;&nbsp;Notice that file stored on
                          server-side will be originalfilename.zip<br />
                          Using this parameter could lower bandwidth usage but
                          it will affect client-side performance because of
                          compression process. Don't enable &quot;ziponfly&quot;
                          parameter if you plan to transfer compressed files
                        such as GIF, JPEG, MP3, ... JFileUpload allows skipping such files with &quot;zipignorelist&quot; parameter.<br />
                        JFileUpload could also zip all files in one overall archive before upload. See the <a href="tutorials/compression.html">compression tutorial</a> to learn how to setup this feature. </li>
                    <li><b><a name="43" id="43"></a>How
                      to upload files &gt; 2GB through HTTP ?<br />
                      </b>First, you have to set &quot;chunksize&quot; parameter
                      on JFileUpload. Chunksize must be under 2GB (for
                      256MB, chunksize=268435456). Here is how JFileUpload
                      works:<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;1 - Split file to upload in
                      temporary chunks (such as originalfilename.chunkid).<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;2 - Upload each chunk.<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(with
                      additionnal chunkid, chunkamount, chunkbase HTTP parameters).<br />
                      &nbsp;&nbsp;&nbsp;&nbsp;3 - Delete each temporary
                      chunk file.<br />
                      Second, you need a server-side script that handles
                      chunkid, chunkamount, chunkbase HTTP parameters to
                      re-compose file from uploaded chunks. <br />
                      <span class="sfntgray">(process.jsp server-side
                        script included in JSPUpload provides this feature).</span><br />
                    </li>
                    </ul>
                  <table width="100%" border="0" cellspacing="1" cellpadding="1">
                    <tr>
                      <td class="sectionTitle">Resume and overwrite</td>
                    </tr>
                  </table>
                  <ul>
                        <li><b><a name="44" id="44"></a></b><b>Resume doesn't work with my Microsoft FTP server ?<br />
                          </b>Try to set resumecommand extra parameter such as:<br />
                          &nbsp;&nbsp;&nbsp;&nbsp;param3=&quot;resumecommand&quot;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;value3=&quot;append&quot;</li>
                    <li><b><a name="45" id="45"></a>How JFileUpload could resume broken uploads ?</b><br />
                      Uncomplete upload could occur on system/network failure
                      or simply because you've cancelled upload. JFileUpload
                      can resume uncomplete uploads. Use &quot;resume&quot; parameter to enable this feature. JFileUpload sends
                      an additional request to server to know if current
                      upload should be resumed. If you're interested in
                      knowing how it works then see details below:<br />
                      For FTP: <br />
                      &nbsp;1 - Applet sends LIST command with current filename
                      to upload.<br />
                      &nbsp;2 - FTP server returns remote file info (size,
                      date) if available.<br />
                      &nbsp;3 - If remote file size &lt; local file size
                      then Applet sends REST resumeindex command.<br />
                      &nbsp;4 - Applet sends STOR command to upload file
                      (starting at resumeindex).<br />
                      For HTTP:<br />
                      &nbsp;Resuming is more complex and requires a server-side
                      script that supports <br />
                      &nbsp;&quot;<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html" target="_blank">Content-Range</a>&quot; header :<br />
                      &nbsp;1 - Applet sends HEAD request with &quot;filename&quot; header for current upload. <br />
                      &nbsp;2 - Server script must return &quot;HTTP 404
                      not found&quot; response if file does not <br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exist or &quot;HTTP
                      200 OK&quot; response with file size in a &quot;size&quot; header if file exists.<br />
                      &nbsp;3 - If remote file size &lt; local file size
                      then Applet sends HTTP multipart POST <br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request with &quot;Content-Range&quot; header including resumeindex.<br />
                      &nbsp;4 - Server script handles upload request and
                      append data to remote file.<br />
                      <span class="sfntgray">&nbsp;&nbsp;(process.jsp
                        server-side script included in JSPUpload provides
                        this feature).</span></li>
                    <li><b><a name="46" id="46"></a></b><b>How
                      JFileUpload could rename duplicated files before
                      upload ?</b><br />
                      JFileUpload can check if file already exists on
                      server before uploading it. Use overwrite parameter
                      to enable this feature. JFileUpload sends an additional
                      request to server to know if current upload should
                      be overwritten or not. If you're interested in knowing
                      how it works then see details below for HTTP : <br />
                      &nbsp;1 - Applet sends HEAD request with &quot;filename&quot;
                      header for current upload.<br />
                      &nbsp;2 - Server script must return &quot;HTTP 404
                      not found&quot; response if file does not <br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exist or &quot;HTTP
                      200 OK&quot; response with file size in a &quot;size&quot;
                      header if file exists.<br />
                      &nbsp;3 - Applet applies overwrite policy (indexrename,
                      ...) and loops to step 1 until <br />
                      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;making sure that
                      the file to upload doesn't exist on server.<br />
                      &nbsp;4 - Applet sends HTTP multipart POST request
                      to upload file with the new name.<br />
                      &nbsp;5 - Server script handles upload request and
                      save file.<br />
                      <span class="sfntgray">(process.jsp server-side
                        script included in JSPUpload provides this feature).</span> <br />
                      <u>Note</u>: You could use the &quot;template&quot;
                      parameter to rename files to upload. It would avoid
                      the additional request.</li>
                    <li><b><a name="47" id="47"></a>Could
                      resume and overwrite features work together ?</b><br />
                      Yes, if both are enabled then resume is prior to overwrite.
                      Resume and overwrite will also work with folders and
                      subfolders upload.<br />
                    </li>
                    </ul>
                  <table width="100%" border="0" cellspacing="1" cellpadding="1">
                    <tr>
                      <td class="sectionTitle">Others</td>
                    </tr>
                  </table>
                  <ul>
                        <li><b><a name="48" id="48"></a></b><strong>How to have dynamic parameters in applet_http.js </strong><b> JavaScript file ?</b><br />
                        Do the same as you did for any dynamic file. For instance, for PHP rename the file as applet_http_js.php, add your PHP code and modify link in applet_http.html such as &lt;script src=&quot;applet_http_js.php&quot;&gt;&lt;/script&gt;</li>
                    <li><strong><b><a name="49" id="49"></a></b>H</strong><b>ow
                      to pass extra parameters to JFileUpload from JavaScript
                      ?</b><br />
                      JFileUpload supports JavaScript to Applet communication.
                      Use document.fileupload.setParameter(name,value)
                      to pass or update extra parameters. For instance in your HTML:<br />
                      <table width="100%"  border="0" cellspacing="0" cellpadding="0">
                        <tr>
                          <td><font size="-1" face="Verdana, Arial, Helvetica, sans-serif" class="sfntgray">[...]<br />
                            &lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;&lt;!--<br />
                            function modify(val)<br />
                            { <br />
                            &nbsp;&nbsp;&nbsp;&nbsp;document.fileupload.setParameter(&quot;anotherHTTPparam&quot;,val);<br />
                            }<br />
                            //--&gt;&lt;/SCRIPT&gt;<br />
                            [...]<br />
                            &lt;form name=&quot;myform&quot; method=&quot;post&quot;
                            action=&quot;&quot;&gt;<br />
                            &lt;input name=&quot;custom&quot; type=&quot;text&quot;&gt;<br />
                            &lt;input type=&quot;button&quot; name=&quot;mybutton&quot;
                            value=&quot;test&quot; onClick=&quot;modify(myform.custom.value)&quot;&gt;<br />
                            [...]</font></td>
                            </tr>
                        </table>
                        </li>
                    <li><b><a name="50" id="50"></a>How
                      to update regular applet parameters from JavaScript ?<br />
                      </b>There is a document.fileupload.setProperty(name,value)
                      method allowing to update the following applet parameters: forward, forwardtarget, forwardparameters, post,
                      postparameters, ziponfly, username, password, template
                      and resume. For instance, to update forward parameter: <br />
                      &nbsp;&nbsp; document.fileupload.setProperty(&quot;forward&quot;,&quot;http://server.com/script.php&quot;);</li>
                    <li><b><a name="51" id="51"></a>Any
                      other JavaScript method available ?<br />
                      </b>Yes, JFileUpload provides two methods allowing
                      to get info about uploads :<br />
                      document.fileupload.getState(filename) returns WAITING,
                      INPROGRESS, COMPLETED, FAILED, CANCELLED string for
                      a given filename. <br />
                      document.fileupload.getFilenames() returns a list
                      of filenames to upload.<br />
                      You have a sample usage of the JavaScript API in <a href="samples/javascript_api/">samples/javascript_api/</a></li>
                    <li><b><a name="52" id="52"></a></b><b>How
                      to get more traces for debug purposes ?</b><br />
                      JFileUpload
                      uses Commons-Logging API. To enable DEBUG mode, just
                      copy/paste <a href="tutorials/commons-logging.properties" target="_blank">commons-logging.properties</a> and <a href="tutorials/simplelog.properties">simplelog.properties</a> in the same directory as JFileUpload applet. Notice
                      that DEBUG mode will slow down applet execution so
                      NEVER enable DEBUG mode in production because JFileUpload
                      could use much CPU after a long time. Debug messages
                      will be displayed in the <a href="http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/console.html" target="_blank">Java
                        Console</a>.</li>
                    <li><b><a name="53" id="53"></a>Can
                      I run JFileUpload from a CD-ROM or DVD ?<br />
                      </b>Yes. If you use &quot;chunksize&quot; and/or &quot;ziponfly&quot;
                      parameters then you should setup &quot;tmpfolder&quot;
                      parameter too because JFileUpload will generate
                      temporary files. tmpfolder=&quot;javatmpdir&quot;
                      will generate temporary files in user's home folder
                      instead of selected files folder.</li>
                    <li><b><a name="54" id="54"></a>Can
                      I scale images before upload ?</b><br />
                      JFileUpload
                      provides a filter API to pre-process files to upload.
                      You could find an image scaling filter that generates
                      thumbnails (or magnify images) before upload in JFileUpload <a href="http://www.jfileupload.com/products/tools/index.html" target="_blank">add-ons</a> section.</li>
                    <li><b><a name="55" id="55"></a>Can I queue files instead of uploading immediatly after selection ?</b><br />
                      Yes, you need JBatchUpload plugin available in <a href="http://www.jfileupload.com/products/tools/index.html" target="_blank">add-ons</a> section.</li>
                    <li><b><a name="56" id="56"></a>Can
                      I PGP encrypt files before upload ?</b><br />
                      You
                      could find a PGP pre-processing filter that encrypts
                      files before upload in JFileUpload <a href="http://www.jfileupload.com/products/tools/index.html" target="_blank">add-ons</a> section.</li>
                    <li><b><a name="57" id="57"></a></b><b>I'm
                      lost, where are the samples for basic and advanced
                      usages ?</b><br />
                      Check out the <a href="samples/" target="_blank">samples/
                        folder</a> in this documention.</li>
                    <li><b><a name="58" id="58"></a></b><b>I
                      need to click on applet before using it, what's wrong
                      ?</b><br />
                      A recent <a href="http://java.sun.com/developer/technicalArticles/J2SE/Desktop/ieappletguide/index.html" target="_blank">update</a> to Microsoft Internet Explorer 6 included a change
                      that alters the way users interact with applets in
                      the browser. Check out the <a href="samples/kb912945/">samples/kb912945/</a> folder to fix this issue.</li>
                    <li><b><a name="59" id="59"></a>JFileUpload
                      seems to ignore my settings, what's wrong ?<br />
                      </b>It might be a problem of JavaScript. If you mess
                      up the cross-browser JavaScript that displays applet
                      then some parameters may be skipped. Use copy/paste of an existing parameter to  add new parameter.</li>
                    <li><b><a name="60" id="60"></a>My
                      browser crashes when loading JFileUpload ?</b><br />
                      We've have been reported that messed up JavaScript
                      could return a VC++ runtime error and crash Internet
                      Explorer on a few windows configuration. The solution
                      is to setup carefully the JavaScript file (copy/paste
                      existing line to add parameter).</li>
                    <li><b><a name="60" id="602"></a>JFileUpload supports JRE 1.4+ but it requires to download JRE1.6?</b><br />
Yes, for security and support reasons, default JavaScript setup of JFileUpload and add-ons is for Java 1.6 (or higher). If you do want 1.4 support then see JRE1.4+ in samples folder.<br />
                      <br />
                    </li>
                  </ul></td>
              </tr>
            </table>            </td>
      </tr>
    </table></td>
  </tr>
  </table>
  </div>
  <div id="bottomDiv">
    <p><a href="http://java.sun.com" target="_blank">Java</a> and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. <br />
    All other company and/or product names are the property of their respective owners.</p>
  </div>
</div>
</body>
</html>
